Создать таблицу сессий auth_db.sessions
Развертывание структуры хранения долгоживущих refresh-сессий
- Репозиторий / Компонент:
auth-service(Базаauth_db, контур Identity & Auth / SECURITY). - Целевая СУБД: PostgreSQL v15+.
- Ссылка на Метод: Спецификация POST /register
- Статус: Готово к реализации
In accordance with internal security guidelines, this ticket displays a deployment-ready snapshot of the database architecture. Advanced trace metadata fields and compliance security schemas are accessible only within the internal staging perimeter.
- Полная спецификация метода: Доступна только во внутреннем контуре разработки (Confluence / Swagger Enterprise).
- Для получения доступа: Обратитесь к системному аналитику или Product Owner вашей команды.
Инструкция по шагам: Выполнить DDL-миграцию для создания таблицы реестра выданных долгоживущих refresh-сессий (
sessions) [2026-07-02].ImportantВнимание: Архитектурное ограничениеВ целях соблюдения принципов микросервисной изоляции (Shared-Nothing Architecture), поле
user_idобъявляется как плоский идентификатор БЕЗ создания физического внешнего ключа (FOREIGN KEY / REFERENCES) на таблицу пользователей. Логическая валидация существования субъекта должна производиться исключительно на уровне прикладного кода сервиса.В соответствии со спецификацией безопасности, в базу записывается строго криптографический хэш рефреш-токена (SHA-256), а не его сырое значение.
-- Скрипт DDL-миграции для реестра сессий auth_db.sessions
CREATE TABLE IF NOT EXISTS auth_db.sessions (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
user_id UUID NOT NULL, -- Плоский ID без внешних ключей для изоляции микросервисов
token_hash VARCHAR(64) UNIQUE NOT NULL, -- SHA-256 хэш от Refresh Token
device_fingerprint VARCHAR(255), -- Для контроля контекста и Breach Detection
ip_address VARCHAR(45),
is_revoked BOOLEAN DEFAULT false, -- Изменяется на true при Logout или компрометации
expires_at TIMESTAMP WITH TIME ZONE NOT NULL,
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
);
-- Индексы для оптимизации валидации и ротации токенов на Шаге 9 (Ответ шлюза)
CREATE INDEX IF NOT EXISTS idx_sessions_token_lookup
ON auth_db.sessions (token_hash)
WHERE is_revoked = false AND expires_at > NOW();
CREATE INDEX IF NOT EXISTS idx_sessions_user_active
ON auth_db.sessions (user_id)
WHERE is_revoked = false;